package com.chenfan.process.biz;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.process.entity.dto.ApprovalTemplateCodeDTO;
import com.chenfan.process.entity.dto.ApprovalTemplateQueryDTO;
import com.chenfan.process.entity.dto.ApprovalTemplateReceivedDTO;
import com.chenfan.process.entity.po.ApprovalTemplatePo;
import com.chenfan.process.entity.vo.ApprovalTemplateDetailVO;
import com.chenfan.process.entity.vo.ApprovalTemplateVo;

/**
 * @author liuming
 * @date 2021/11/25
 */
public interface ApprovalTemplateBiz {

    /**
     * 创建审批模板
     *
     * @param template
     *            模板
     * @return {@link Long}
     */
    Long createApprovalTemplate(ApprovalTemplateReceivedDTO template);

    /**
     * 更新审批模板
     *
     * @param approvalTemplateId
     *            审批模板id
     * @param template
     *            模板
     */
    void updateApprovalTemplate(Long approvalTemplateId, ApprovalTemplateReceivedDTO template);

    /**
     * 获得审批模板
     *
     * @param approvalTemplateId
     *            审批模板id
     * @return {@link ApprovalTemplateDetailVO}
     */
    ApprovalTemplateDetailVO getApprovalTemplate(Long approvalTemplateId);

    /**
     * 分页查询审批模板
     *
     * @param pageNum
     *            页面num
     * @param pageSize
     *            页面大小
     * @param template
     *            模板
     * @return {@link Page}<{@link ApprovalTemplatePo}>
     */
    Page<ApprovalTemplateVo> pageApprovalTemplate(Integer pageNum, Integer pageSize, ApprovalTemplateQueryDTO template);

    void updateApprovalTemplateCode(Long approvalTemplateId, ApprovalTemplateCodeDTO code);

    void preCheck(ApprovalTemplateCodeDTO dto);

    void switchStatus(Long approvalTemplateId, Integer status);

    Integer statisticsNumber();
}
